using System;
using System.Threading;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Net;

namespace QuizArena
{
    public class GameplayScreen : GameScreen, IDisposable
    {
        #region Gameplay Data

        /// <summary>
        /// The primary gameplay object.
        /// </summary>
        private Mundo world;

        #endregion


        #region Graphics Data


        #endregion


        #region Networking Data


        /// <summary>
        /// The network session used in this game.
        /// </summary>
        private NetworkSession networkSession;

        /// <summary>
        /// Event handler for the session-ended event.
        /// </summary>
        EventHandler<NetworkSessionEndedEventArgs> sessionEndedHandler;

        /// <summary>
        /// Event handler for the game-ended event.
        /// </summary>
        EventHandler<GameEndedEventArgs> gameEndedHandler;

        /// <summary>
        /// Event handler for the gamer-left event.
        /// </summary>
        EventHandler<GamerLeftEventArgs> gamerLeftHandler;


        #endregion


        #region Initialization Methods


        /// <summary>
        /// Construct a new GameplayScreen object.
        /// </summary>
        /// <param name="networkSession">The network session for this game.</param>
        /// <param name="world">The primary gameplay object.</param>
        public GameplayScreen(NetworkSession networkSession)
        {
            
        }


        /// <summary>
        /// Load graphics content for the game.
        /// </summary>
        public override void LoadContent()
        {
            
        }


        /// <summary>
        /// Release graphics data.
        /// </summary>
        public override void UnloadContent()
        {
            
        }


        #endregion


        #region Updating Methods


        /// <summary>
        /// Updates the state of the game. This method checks the GameScreen.IsActive
        /// property, so the game will stop updating when the pause menu is active,
        /// or if you tab away to a different application.
        /// </summary>
        public override void Update(GameTime gameTime, bool otherScreenHasFocus,
                                                       bool coveredByOtherScreen)
        {
            
        }


        /// <summary>
        /// Lets the game respond to player input. Unlike the Update method,
        /// this will only be called when the gameplay screen is active.
        /// </summary>
        public override void HandleInput(InputState input)
        {
           
        }


        /// <summary>
        /// Event handler for when the user selects "yes" on the "are you sure
        /// you want to exit" message box.
        /// </summary>
        private void ExitMessageBoxAccepted(object sender, EventArgs e)
        {
            
        }


        /// <summary>
        /// Exit this screen.
        /// </summary>
        public override void ExitScreen()
        {
            
        }


        #endregion


        #region Drawing Methods


        /// <summary>
        /// Draws the gameplay screen.
        /// </summary>
        public override void Draw(GameTime gameTime)
        {
            
        }


        /// <summary>
        /// Draw the user interface elements of the game (scores, etc.).
        /// </summary>
        /// <param name="elapsedTime">The amount of elapsed time, in seconds.</param>
        private void DrawHud(float totalTime)
        {
            
        }


        #endregion


        #region Networking Event Handlers


        /// <summary>
        /// Handle the end of the game session.
        /// </summary>
        void networkSession_GameEnded(object sender, GameEndedEventArgs e)
        {
            
        }


        /// <summary>
        /// Handle the end of the session.
        /// </summary>
        void networkSession_SessionEnded(object sender, NetworkSessionEndedEventArgs e)
        {
            
        }


        /// <summary>
        /// Handle a player leaving the game.
        /// </summary>
        void networkSession_GamerLeft(object sender, GamerLeftEventArgs e)
        {
            
        }


        #endregion


        #region IDisposable Implementation


        /// <summary>
        /// Finalizes the GameplayScreen object, calls Dispose(false)
        /// </summary>
        ~GameplayScreen()
        {
            
        }


        /// <summary>
        /// Disposes the GameplayScreen object.
        /// </summary>
        public void Dispose()
        {
            
        }


        /// <summary>
        /// Disposes this object.
        /// </summary>
        /// <param name="disposing">
        /// True if this method was called as part of the Dispose method.
        /// </param>
        protected virtual void Dispose(bool disposing)
        {
           
        }


        #endregion
    }
}
